package is202.hrms.web;

import is202.hrms.ejb.RegisterEJB;
import is202.hrms.entity.Register;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.enterprise.context.Conversation;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;

/**
 * Backing bean fort register.xhtml. @Named viser at dette er en 
 * CDI backing bean. @ConversationScoped kontrollerer livstiden til beanen.
 * Livstiden til en ConversationScoped bean blir håndtert i koden.
 *
 * @author Anders
 */
@Named("registerbean")
@ConversationScoped
public class RegisterBean implements Serializable {

    // @Inject spørr serveren om å gi oss et
    // Conversation objekt, og lagre det i conv
    @Inject private Conversation conv;
    @EJB RegisterEJB regiEjb;
    private boolean updating;

    //Register felter - Disse feltene blir kopiert til et Register
    // objekt, når data skal lagres i databasen.
    private long registerNr;
    private String uname;
    private String pass;
    private String usertype;
    private String email;
                
    private List<Register> registere;

    public RegisterBean() {
    }

    /**
     * Setter et nummer når en bruker registrer seg
     */
    public void setRegisterNr(long registerNr) {
        if (conv.isTransient()) {
            conv.begin();
        }

        Register register = regiEjb.find(registerNr);
        if (null == register) {
            // Vi kommer hit hvis registerNr ikker er gyldig, eller hvis
            // registerNo er gyldig men det ikke finnes noen registreringer med dette nummert
            updating = false;
            registerNr = 0;
            uname = "";
            pass = "";
            email = "";
            usertype = "";
            registere = new ArrayList<Register>();
        }
        else {
            updating = true;
            this.registerNr = register.getRegisterNr();
            uname = register.getUname();
            pass = register.getPass();
            email = register.getEmail();
            usertype = register.getUsertype();
            registere = register.getRegister();
        }
    }

    public long getRegisterNr() {
        return registerNr;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }
    
    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }
    
    public String getEmail(){
        return email;
    }
    
    public void setEmail(String email){
        this.email = email;
    }
    public String getUsertype(){
        return usertype;
    }
    
    public void setUsertype(String usertype){
        this.usertype = usertype;
    }

    public List<Register> getRegister() {
        return registere;
    }

    public boolean isUpdating() {
        return updating;
    }

    private Register createRegisterObject() {
        // Lager et Register objekt som inneholder data
        // fra form. Objektet kan så blir sendt til
        // registerListBean
        Register register = new Register();
        register.setRegisterNr(registerNr);
        register.setUname(uname);
        register.setPass(pass);
        register.setEmail(email);
        register.setUsertype(usertype);
        return register;
    }
    
    // Sjekker om data ble lagret eller ikke,
    // og sender deg til success siden hvis den ble det.
    public View saveRegister() {
        Register register = createRegisterObject();
        if (register.getRegisterNr() > 0) regiEjb.update(register);
        else regiEjb.insert(register); 
   
        return View.success;        
    }
}
